import axios from 'axios'
import type { InternalAxiosRequestConfig, AxiosResponse, AxiosRequestConfig } from 'axios'

const service = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL, // 根据实际情况修改
  timeout: 10000,
})

// 请求拦截器
service.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    // 通过 set 设置 Content-Type，避免类型冲突
    config.headers.set && config.headers.set('Content-Type', 'application/json')
    // 这里可以添加其他请求前的处理逻辑
    return config
  },
  error => Promise.reject(error)
)

// 响应拦截器
service.interceptors.response.use(
  (response: AxiosResponse) => response,
  error => Promise.reject(error)
)

// 封装 get/post 方法
export function get<T = any>(url: string, params?: any, config?: AxiosRequestConfig) {
  return service.get<T>(url, { params, ...config })
}

export function post<T = any>(url: string, data?: any, config?: AxiosRequestConfig) {
  return service.post<T>(url, data, config)
}

export default service